// 阿拉丁API
import GameControl from './GameControl';

export default class AldAnalyticsApi {
    _TAG: any = "AldAnalyticsApi ";
    _versions: string = "v1.0";
    _isEnabled: boolean = window.ALDASTATE;

    // 单例模式
    private static _instance: AldAnalyticsApi = null;
    public static getInstance() {
        if (this._instance == null) {
            this._instance = new AldAnalyticsApi();
        }
        return this._instance;
    }

    // 阿拉丁埋点(自定义事件)
    // 使用：Constants.AldAnalytics.aldSendEvent(key, value);
    aldSendEvent(key, value) {
        if (cc.sys.platform == cc.sys.WECHAT_GAME && this._isEnabled) {
            wx.aldSendEvent(key, { "内容": value });
        }
    }

    // 关卡开始（关卡分析：http://doc.aldwx.com/game/join/level）
    // 使用：Constants.AldAnalytics.aldOnStart();
    aldOnStart() {
        let stageId = GameControl.getInstance().getPassId();
        if (cc.sys.platform == cc.sys.WECHAT_GAME && this._isEnabled) {
            wx.aldStage.onStart({
                stageId: stageId,     //关卡ID 该字段必传
                stageName: "第" + stageId + "关", //关卡名称  该字段必传
            })
        }
    }

    // 关卡中（关卡分析：http://doc.aldwx.com/game/join/level）
    // obj = {
    //     stageId: stageId, 关卡ID
    //     event: event, // revive:复活
    //     itemName: itemName, // 商品名,
    //      itemMoney: itemMoney, // 金额
    //     desc: desc // 描述
    // }
    // 使用：Constants.AldAnalytics.aldOnRuinning(obj);
    aldOnRuinning(obj) {
        if (cc.sys.platform == cc.sys.WECHAT_GAME && this._isEnabled) {
            wx.aldStage.onRunning({
                stageId: obj.stageId, //关卡ID 该字段必传
                stageName: "第" + obj.stageId + "关", //关卡名称  该字段必传
                userId: GameControl.getInstance().getOpenID(), //用户ID 可选
                event: obj.event,  //关卡进行中，用户触发的操作    该字段必传
                params: {    //参数
                    itemName: obj.itemName,  //购买商品名称  该字段必传
                    itemCount: 1,        //购买商品数量  可选，默认1
                    itemMoney: obj.itemMoney || 0,        // 购买商品金额  可选 默认0
                    desc: obj.desc  //商品描述   可选
                }
            })
        }
    }

    // 关卡结束（关卡分析：http://doc.aldwx.com/game/join/level）
    // obj = {
    //     stageId: stageId, //关卡ID
    //     event: event, // complete:关卡完成 / fail:关卡失败
    //     desc: desc // 对关卡失败/成功的描述
    // }
    // 使用：Constants.AldAnalytics.aldOnEnd(obj);
    aldOnEnd(obj) {
        if (cc.sys.platform == cc.sys.WECHAT_GAME && this._isEnabled) {
            wx.aldStage.onEnd({
                stageId: obj.stageId,
                stageName: "第" + obj.stageId + "关",
                event: obj.event,
                params: {
                    desc: obj.desc || ""
                }
            })
        }
    }

    // 初始化等级（等级分析：http://doc.aldwx.com/game/join/grade）
    // aldOnInitLevel() {
    //     if (cc.sys.platform == cc.sys.WECHAT_GAME) {
    //         wx.aldLevel.onInitLevel({
    //             levelId: 1,  // 等级id 必传
    //             levelName: '第1级'  // 等级名称 必传
    //         })
    //     }
    // }
    // 使用：Constants.AldAnalytics.aldOnSetLevel(obj);

    // 等级升级（等级分析：http://doc.aldwx.com/game/join/grade）
    aldOnSetLevel(obj) {
        if (cc.sys.platform == cc.sys.WECHAT_GAME && this._isEnabled) {
            wx.aldLevel.onSetLevel({
                levelId: obj.levelId,  // 等级id 必传
                levelName: obj.levelName,  // 等级名称 必传
            })
        }
    }

    // 捕捉用户在等级中支付成功的一些行为和操作（等级分析：http://doc.aldwx.com/game/join/grade）
    // obj = {
    //     levelId: levelId, // 等级id
    //      levelName: levelName, // 等级名字
    //     amount: amount, // 支付金额
    //     desc: desc // 支付描述
    // }
    // 使用：Constants.AldAnalytics.aldOnPaySuccess(obj);
    aldOnPaySuccess(obj) {
        if (cc.sys.platform == cc.sys.WECHAT_GAME && this._isEnabled) {
            wx.aldLevel.onPaySuccess({
                levelId: obj.levelId,
                levelName: obj.levelName,
                params: {
                    amount: obj.amount,
                    desc: obj.desc || ""
                }
            })
        }
    }
}
